import * as TooltipPrimitive from "@radix-ui/react-tooltip";
import { forwardRef, PropsWithChildren, Ref } from "react";
import { cn } from "@/lib/utils";

const TooltipProvider = TooltipPrimitive.Provider;
const Tooltip = TooltipPrimitive.Root;
const TooltipTrigger = TooltipPrimitive.Trigger;

interface TooltipContentProps extends TooltipPrimitive.TooltipContentProps {
  className?: string;
  sideOffset?: number;
}

const TooltipContent = forwardRef(
  (
    {
      className,
      sideOffset = 4,
      ...props
    }: PropsWithChildren<TooltipContentProps>,
    // 将 `any` 替换为 `HTMLElement` 以指定具体类型
    ref: Ref<HTMLElement>,
  ) => (
    <TooltipPrimitive.Content
      // 修改为正确的类型
      ref={ref as Ref<HTMLDivElement>}
      sideOffset={sideOffset}
      className={cn(
        "z-50 animate-in overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md fade-in-0 zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
        className || "",
      )}
      {...props}
    />
  ),
);

TooltipContent.displayName = TooltipPrimitive.Content.displayName;

export { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent };
